// 现在是否正在刷新
let isRefreshing = false;

// 请求队列，用于缓存请求
const queue: Array<() => void> = [];

// 是否阻塞所有请求
function isBlock(): boolean {
    return isRefreshing;
}

// 阻塞
function block() {
    isRefreshing = true;
}

// 释放
function release() {
    isRefreshing = false;
}

// 回调订阅
function subscribe(callback: () => void) {
    queue.push(callback);
}

// 触发所有回调
function notify() {
    while (queue.length > 0) {
        const callback = queue.shift();
        if (callback !== undefined) {
            callback();
        }
    }
}


export const Token = {
    isBlock,
    block,
    release,
    subscribe,
    notify
};